recognising design patterns